package leetcode_周赛._2021._202111._20211121;

/**
 * @author yzh
 * @version 1.0
 * @date 2021/11/21 15:19
 * 两栋颜色不同且距离最远的房子
 * 街上有 n 栋房子整齐地排成一列，每栋房子都粉刷上了漂亮的颜色。给你一个下标从 0 开始且长度为 n 的整数数组 colors ，
 * 其中 colors[i] 表示第  i 栋房子的颜色。
 * 返回 两栋 颜色 不同 房子之间的 最大 距离。
 * 第 i 栋房子和第 j 栋房子之间的距离是 abs(i - j) ，其中 abs(x) 是 x 的绝对值。
 * 算法：贪心
 * 比较首尾两栋房子的颜色，如果颜色不相同，直接返回
 * 如果颜色相同，则左边找到第一个与末尾颜色不相同的房子；右边同理
 * 比较左边和右边第一栋与首尾颜色不相同的房子，返回最大的那个
 */
public class _5930 {

    public int maxDistance(int[] colors) {
        int len = colors.length;
        int l = colors[0], r = colors[len - 1];
        if (l != r) return r - l;
        int a = 0;
        for (int i = 1; i < len; i++)
            if (colors[i] != colors[0]) a = i;
        int b = 0;
        for (int i = len - 2; i >= 0; i--)
            if (colors[i] != colors[len - 1]) b = i;
        return Math.max(a, len - 1 - b);
    }

}
